package com.jlwl.houseservice.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.jlwl.houseservice.entity.Review;
import com.jlwl.houseservice.vo.ReviewCreateVO;
import com.jlwl.houseservice.vo.ReviewQueryVO;
import com.jlwl.houseservice.vo.ReviewReplyVO;
import com.jlwl.houseservice.vo.ReviewStatsVO;

/**
 * 评价Service接口
 */
public interface ReviewService extends IService<Review> {

    /**
     * 分页查询评价列表
     * @param queryVO 查询条件
     * @return 分页结果
     */
    Page<Review> pageList(ReviewQueryVO queryVO);

    /**
     * 创建评价
     * @param createVO 创建参数
     * @param userId 用户ID
     * @return 是否成功
     */
    boolean createReview(ReviewCreateVO createVO, Integer userId);

    /**
     * 回复评价
     * @param id 评价ID
     * @param replyVO 回复参数
     * @return 是否成功
     */
    boolean replyReview(Integer id, ReviewReplyVO replyVO);

    /**
     * 更新评价状态
     * @param id 评价ID
     * @param status 状态
     * @return 是否成功
     */
    boolean updateReviewStatus(Integer id, Integer status);

    /**
     * 获取服务评价统计
     * @param serviceId 服务ID
     * @return 评价统计
     */
    ReviewStatsVO getServiceReviewStats(Integer serviceId);

    /**
     * 获取员工评价统计
     * @param employeeId 员工ID
     * @return 评价统计
     */
    ReviewStatsVO getEmployeeReviewStats(Integer employeeId);

    /**
     * 获取用户评价列表
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页数量
     * @return 分页结果
     */
    Page<Review> getUserReviews(Integer userId, Integer page, Integer size);

    /**
     * 检查用户是否已评价订单
     * @param orderNo 订单编号
     * @param userId 用户ID
     * @return 是否已评价
     */
    boolean hasReviewed(String orderNo, Integer userId);
} 